Dirty Read와 Phantom Read는 실제로 언제 발생할까 — 교과서와 실무 사이의 간격
스터디·11분 읽기
`Dirty Read`가 왜 실무에서 거의 안 보이는지, `Phantom Read`가 왜 MySQL InnoDB에서는 다른 문제처럼 관찰되는지 실제 발생 조건 중심으로 정리합니다.
9개의 글
`Dirty Read`가 왜 실무에서 거의 안 보이는지, `Phantom Read`가 왜 MySQL InnoDB에서는 다른 문제처럼 관찰되는지 실제 발생 조건 중심으로 정리합니다.
`REPEATABLE READ`에서 일반 `SELECT`를 최신값처럼 믿었다가, 한 주문에 환불 이력이 두 번 쌓인 장애를 재현과 수정안으로 정리합니다.
HTTP 메서드의 멱등성과 `idempotency key` 기반 API 멱등성을 구분하고, 중복 결제·중복 주문을 저장과 재시도 관점에서 어떻게 제어할지 정리합니다.
DB 행 락, MySQL `GET_LOCK()`, Redis 분산 락이 각각 어떤 범위를 보호하는지 비교하고, 조건부 `UPDATE`나 `UNIQUE` 제약이 더 나은 경우까지 정리합니다.
낙관적 락과 비관적 락을 충돌률, 재시도 비용, 트랜잭션 길이 관점에서 비교하고, 조건부 `UPDATE`나 `UNIQUE` 제약이 더 나은 경우까지 정리합니다.
SELECT ... FOR UPDATE가 정확히 무엇을 잠그는지, 어떤 상황에서 필요하고 어떤 상황에서는 과한지, 인덱스와 트랜잭션 범위까지 실무 기준으로 정리합니다.
MVCC가 왜 필요한지, Undo 로그와 스냅샷 읽기가 어떻게 동작하는지 정리합니다.
데이터베이스 락의 종류와 동작 원리, 낙관적·비관적 락 전략, 데드락 원인과 대처법을 예제와 함께 정리합니다.
트랜잭션 격리 수준이 왜 필요한지, 각 레벨에서 어떤 이상 현상이 발생하는지 예제와 함께 정리합니다.